package com.example.flink.service;

public class QueryParser {
    public static String parse(String query) {
        if (query == null || query.trim().isEmpty()) {
            return "1=1";
        }
        String q = query.trim();
        // 先处理 LIKE "xxx" 语法
        q = q.replaceAll("(?i)like\\s*\"(.*?)\"", "LIKE '%$1%'");
        // 处理 = "xxx" 语法
        q = q.replaceAll("=\\s*\"(.*?)\"", "= '$1'");
        // 处理 = 未加引号的情况（如 level=INFO），只为右侧是纯单词/数字的加引号
        q = q.replaceAll("=\\s*([A-Za-z0-9_]+)", "= '$1'");
        // 允许 and/or/括号等复杂表达式
        if (q.contains("=") || q.toLowerCase().contains("and") || q.toLowerCase().contains("or")) {
            return q;
        } else {
            // 全文模糊查message
            return "message LIKE '%" + q.replace("'", "''") + "%'";
        }
    }
} 